package com.abner.design.patterns.template;


/**
 * 豆浆
 * @author abner
 */
public abstract class SoyaMilk {

	/**
     * 制作方法做成抽象的不需要子类重写
	 */
	final void make() {
		select(); 
		if(customerWantCondiments()) {
			addCondiments();
		}
		soak();
		beat();
		
	}

    /**
     * 选原料
	 */
	void select() {
		System.out.println("第一步：选择好的新鲜黄豆");
	}

	/**
	 * 添加调味品(调味品不同所以做成抽象的)
	 */
	abstract void addCondiments();

    /**
     * 侵泡
	 */
	void soak() {
		System.out.println("第三步，黄豆和配料开始浸泡，需要 3 小时");
	}

    /**
     * 打磨
	 */
	void beat() {
		System.out.println("第四步：黄豆和配料放到豆浆机去打碎");
	}

	boolean customerWantCondiments() {
		return true;
	}
}
